<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;

class GoodsController extends Controller
{
     //商品添加;
    public function getAdd()
    {   
       //读取分类信息
        // $cates = DB::table('cates')->get();
        $cates = CateController::getAllCates();
        // dd($cates);
        //读取商品信息
        $goods = DB::table('goods')->get();
        // echo 22;
        return view('admin.goods.add',['goods'=>$goods,'cates'=>$cates]);
    }

    /*
    *商品插入
    */
    public function postInsert(Request $request)
    {   
        //检测空数据插入
        $this->validate($request, [
            'title' => 'required',
            'price' => 'required',
            'kucun' => 'required',
            'color' => 'required',
            'size' => 'required',
            'cate_id' => 'required',
      
        
        ],[
            'title.required'=>'商品名不能为空',
            'price.required'=>'价格不能为空',
            'kucun.required'=>'库存太少了',
            'color.required'=>'颜色不能为空',
            'size.required'=>'尺码不能为空',
            'cate_id.required'=>'商品分类不能为空',
           

        ]);
        // echo 222;
        $data = $request -> all();
         //获取参数
        $data = $request->except('_token','path');

        $data['size'] = implode('@@@',$data['size']);
        $data['color'] = implode('@@@',$data['color']);
        // dd($data);
    
        //写入数据库
        $id = DB::table('goods')->insertGetId($data);

        //商品图片上传
        $result = [];
        if($request->hasfile('path')){

            $files = $request->file('path');
            foreach($files as $k=>$v){
                $tmp = [];
                //文件名称
                $fileName = time().rand(100000,999999);
                //获取文件的后缀名\
                $suffix = $v->getClientOriginalExtension();
                // dd($suffix);

                ///文件夹得规则
                $dir = './uploads/'.date('Ymd');
                $v->move($dir,$fileName.'.'.$suffix);
                //拼接路径
                $tmp['path'] = trim($dir.'/'.$fileName.'.'.$suffix,'.');
                $tmp['good_id'] = $id;
                $result[] = $tmp;

            }
            // dd($result);

            // dd(222);
            $res = DB::table('images')->insert($result);
            //有图片的时候
            if($res && $id){
                return redirect('/goods/list')->with('info','插入成功');
            }else{
                return back()->with('info','插入失败');
            }

        }
        // dd($res);
        //如果没有图片
        if($id){
            return redirect('/goods/list')->with('info','添加成功');
            
        }else{
            return back() -> with('info','添加失败');
            
        }
        
    }



    /*
    *
    *用户列表显示
    */
    public function getList(Request $request)
    {

        $goods = DB::table('goods')->get();
       
        $goods = DB::table('goods')->orderBy('id','desc')->where(function($query)use($request){

            $keyword = $request -> input('keyword');

            if($keyword){
                $query -> where('title','like','%'.$keyword.'%');
            }
        })->paginate($request -> input('num',10));
        
        //分配数据
        return view('admin.goods.list',['goods'=>$goods,'request'=>$request]);
        // dd($data);

    }

    /**
    *用户显示
    */
    public function getEdit(Request $request)
    {
        // echo 222;
        //读取数据
        $id = $request -> input('id');

        //读取数据库
        $good = DB::table('goods')->where('id','=',$id)->first();
        // dd($goods);
        $goods_color = DB::table('goods_color')->get();
        // dd($goods_color);
        $images = DB::table('images')->where('good_id','=',$id)->get();
        // dd($images);

        //获取全部分类信息并分配到admin.cate.edit中在分类下拉框中才能框中遍历
        $goods = DB::table('goods')->get();
        // dd($goods);
        foreach($goods as $k=>$v){
            $arr = $v->color;
            $arr = explode('@@@',$arr);
        }
            
        //显示页面

        return view('admin.goods.edit',['goods'=>$goods,'good'=>$good,'arr'=>$arr,'images'=>$images]);
    }


    /*
    *用户更新
    */
    public function postUpdate(Request $request)
    {
        // echo 2222;
        // dd($request->all());
        //检测空数据插入
        $this->validate($request, [
            'title' => 'required',
            'price' => 'required',
            'kucun' => 'required',
            'color' => 'required',
            'size' => 'required',
            'cate_id' => 'required',
      
        
        ],[
            'title.required'=>'商品名不能为空',
            'price.required'=>'价格不能为空',
            'kucun.required'=>'库存太少了',
            'color.required'=>'颜色不能为空',
            'size.required'=>'尺码不能为空',
            'cate_id.required'=>'商品分类不能为空',
           

        ]);
        //获取参数
        // $data = $request->except('_token','id')  
        // dd($data);

         //如果是顶级分类
        // if($data['pid'] == '0'){
        //     $data['path'] = '0';
        // }else{
        //     //如果不是顶级分类需要拼接path
        //     $p= DB::table('cates')->where('id','=',$data['pid'])->first();
        //     $data['path'] = $p->path.','.$p->id;
        // }

        // //更新数据库
        // $res = DB::table('cates')->where('id','=',$request->input('id'))->update($data);
        // if($res){
        //     return redirect('/cate/list')->with('info','更新成功');
            
        // }else{
        //     return back() -> with('info','更新失败');
            
        // }
         $data = $request -> all();
         //获取参数
        $data = $request->except('_token','path');

        $data['size'] = implode('@@@',$data['size']);
        $data['color'] = implode('@@@',$data['color']);
        // dd($data);
    
        //写入数据库
        // $id = DB::table('goods')->update($data);
        $id = $request->input('id');


        //商品图片上传
        $result = [];
        if($request->hasfile('path')){

            $files = $request->file('path');
            // dd($files);
            foreach($files as $k=>$v){
                $tmp = [];
                //文件名称
                $fileName = time().rand(100000,999999);
                //获取文件的后缀名\
                $suffix = $v->getClientOriginalExtension();
                // dd($suffix);

                ///文件夹得规则
                $dir = './uploads/'.date('Ymd');
                $v->move($dir,$fileName.'.'.$suffix);
                //拼接路径
                $tmp['path'] = trim($dir.'/'.$fileName.'.'.$suffix,'.');
                $tmp['good_id'] = $id;
                $result[]=$tmp;

            }
            foreach($result as $k=>$v){

            }
            // dd($result);
            // $count = (count($result));
            // dd($count);
            // dd(222);
            // for($a=0;$a<$count;$a++){
                // $res = DB::table('images')->where('good_id','=',$id)->delete();
                $res = DB::table('images')->where('good_id','=',$id)->insert($result);
            // }
            // dd($res);
            $arr = DB::table('goods')->where('id',$id)->update($data);
            // dd($arr);
            //有图片的时候
            if($res && $arr){
                // dd(222);
                return redirect('/goods/list')->with('info','修改成功');

            }else{
                // dd(333);
                return back()->with('info','修改失败');
            }

        }
        // dd($res);
        //如果没有图片
        if($id){
            return redirect('/goods/list')->with('info','修改成功');
            
        }else{
            return back() -> with('info','修改失败');
            
        }



    }



    //商品删除
    public function getDelete(Request $request)
    {
        // echo 222;
        //获取id
        $id = $request->input('id');
        //读取
        $good = DB::table('goods') -> where('id','=',$id) ->first();
        // dd($good);
        //商品是否有详情介绍
        $p = $good->detail;
        if($p){
            //匹配图片路径
            preg_match_all('/src="(.*?)"/',$p,$add);

            foreach($add as $k=>$v){
                ($v);
               
            }
            // echo $k;
            // $v = implode($v);
            // dd($v);
            //利用for循环删除goods表的图片
            for($a=0;$a<count($add[1]);$a++){
                @unlink('.'.($v[$a]));
            }           
        }

        // dd(222);
        //通过info 的id找到images里的图片
        $images = DB::table('images')->where('good_id','=',$good->id)->get();
        

        //判断商品是否有图片,有就删除
        if($images){
            foreach($images as $k=>$v){
                $image = $v->path;
                @unlink('.'.$image);
            }
            
        }
        //删除images里面的信息
        DB::table('images')->where('good_id',$good->id)->delete();
        //删除商品信息
        $res = DB::table('goods') -> where('id','=',$id) ->delete();
       
        if($res){
            // echo '删除成功';
            return redirect('/goods/list')->with('info','删除成功');
        }else{
            // echo '删除失败';
            return back() -> with('info','删除失败');
        }
    }

  
}
